// 设备名称配置文件 - 统一设备命名规范
// 格式: AQM-XXX-YY
// XXX: 3位数字的设备型号
// YY: 2位数字的设备序号

export const DEVICE_NAME_CONFIG = {
  // 设备名称格式规范
  FORMAT: 'AQM-XXX-YY',
  PREFIX: 'AQM',
  SEPARATOR: '-',
  
  // 标准设备列表
  STANDARD_DEVICES: [
    { id: 'AQM-123', name: 'AQM-123-01', type: '空气质量监测仪' },
    { id: 'AQM-456', name: 'AQM-456-02', type: '空气质量监测仪' },
    { id: 'AQM-789', name: 'AQM-789-03', type: '空气质量监测仪' },
    { id: 'AQM-101', name: 'AQM-101-04', type: '空气质量监测仪' },
    { id: 'AQM-205', name: 'AQM-205-05', type: '空气质量监测仪' },
    { id: 'AQM-302', name: 'AQM-302-06', type: '空气质量监测仪' },
    { id: 'AQM-417', name: 'AQM-417-07', type: '空气质量监测仪' },
    { id: 'AQM-523', name: 'AQM-523-08', type: '空气质量监测仪' },
    { id: 'AQM-610', name: 'AQM-610-09', type: '空气质量监测仪' },
    { id: 'AQM-725', name: 'AQM-725-10', type: '空气质量监测仪' }
  ]
};

/**
 * 生成标准格式的设备名称
 * @param {number} modelNumber - 设备型号号码 (3位数字)
 * @param {number} serialNumber - 设备序列号 (2位数字)
 * @returns {string} 标准格式的设备名称
 */
export const generateDeviceName = (modelNumber, serialNumber) => {
  const model = modelNumber.toString().padStart(3, '0');
  const serial = serialNumber.toString().padStart(2, '0');
  return `${DEVICE_NAME_CONFIG.PREFIX}${DEVICE_NAME_CONFIG.SEPARATOR}${model}${DEVICE_NAME_CONFIG.SEPARATOR}${serial}`;
};

/**
 * 验证设备名称格式是否正确
 * @param {string} deviceName - 设备名称
 * @returns {boolean} 是否符合标准格式
 */
export const validateDeviceName = (deviceName) => {
  const pattern = /^AQM-\d{3}-\d{2}$/;
  return pattern.test(deviceName);
};

/**
 * 解析设备名称，提取型号和序列号
 * @param {string} deviceName - 设备名称
 * @returns {object|null} {modelNumber, serialNumber} 或 null
 */
export const parseDeviceName = (deviceName) => {
  if (!validateDeviceName(deviceName)) {
    return null;
  }
  
  const parts = deviceName.split('-');
  return {
    modelNumber: parseInt(parts[1]),
    serialNumber: parseInt(parts[2])
  };
};

/**
 * 根据用户ID生成该用户的标准设备列表
 * @param {string} userId - 用户ID
 * @returns {Array} 设备列表
 */
export const generateUserDevices = (userId) => {
  const userIdNum = parseInt(userId) || 1;
  const devices = [];
  
  // 为每个用户生成2-3个设备
  const deviceCount = Math.min(3, Math.max(2, userIdNum));
  
  for (let i = 0; i < deviceCount; i++) {
    const modelNumber = 100 + (userIdNum * 10) + i;
    const serialNumber = (userIdNum * 10) + i + 1;
    
    devices.push({
      id: `device-${userId}-${i + 1}`,
      name: generateDeviceName(modelNumber, serialNumber),
      serialNumber: `SN${(userIdNum * 100 + i + 1).toString().padStart(4, '0')}`,
      type: '空气质量监测仪'
    });
  }
  
  return devices;
};

export default DEVICE_NAME_CONFIG;
